package bz.ziro.kanbe.dao;

import java.util.List;

import org.slim3.datastore.Datastore;

import com.google.appengine.api.datastore.Key;

import bz.ziro.kanbe.meta.MailMeta;
import bz.ziro.kanbe.model.Mail;
import bz.ziro.kanbe.util.KeyFactory;

/**
 * メールDao
 * @author Administrator
 */
public class MailDao extends BaseDao<Mail> {

	/**
	 * メタデータ
	 */
    private static final MailMeta mailMeta = new MailMeta();

    /**
     * 送信アドレスとToアドレスから１件に絞り込む
     * @param fromBuf 受信アドレス
     * @param toBuf 送信アドレス
     * @return メールデータ
     */
	public static Mail findMailData(String fromBuf, String toBuf) {
		return Datastore.query(mailMeta)
					.filter(
						mailMeta.fromAddress.equal(fromBuf),
						mailMeta.toAddress.equal(toBuf)
					).asSingle();
	}

	/**
	 * 親IDによる検索
	 * @param valueOf
	 * @return
	 */
	public static Mail findParentPageKey(Long siteKey,Long keyVal) {
		Key key     = KeyFactory.createSiteKey(siteKey);
		Key mailKey = KeyFactory.createPageKey(siteKey,keyVal);
		return Datastore.query(mailMeta)
					.filter(
						mailMeta.siteKey.equal(key),
						mailMeta.parentPageKey.equal(mailKey)
					).asSingle();
	}

	/**
	 * 全件取得
	 * @return
	 */
	public static List<Mail> all() {
		return Datastore.query(mailMeta).asList();
	}
}
